home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 43
/
Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso
/
Aminet
/
game
/
demo
/
Mattonite_Src.lha
/
Mattonite.AMOS
/
Mattonite.amosSourceCode
Wrap
AMOS Source Code
|
2001-03-11
|
60KB
|
1,895 lines
'-> Mattonite by Stefano Regattin
'i> 2 ottobre 1996
'm> 3,8,12,13,14,19,25,27,31 ottobre 1996
'm> 9 novembre 1996
'm> 12 novembre 1997
'm> 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 maggio 2000
'm> 1,4,5,6,7,8,9,11,13,14,23,26,27,28 giugno 2000
'm> 16,17,18,19,23,24 luglio 2000
'm> 5,12,13,14,15,30 agosto 2000
'm> 1,10,11,26 settembre 2000
'm> 12,15,24,25,26,31 ottobre 2000
'm> 2,16,17,21,23 novembre 2000
'm> 3 dicembre 2000
'm> 5,7,8,9,10,11,13,14,17,18,22,25,26,27,28 febbraio 2001
'm> 1,7,11 marzo 2001
'-----------------------------------------------------------------------------
'To run this game you must have all the data for it; you can find them in the
'archive of the executables Mattonite.lha on Aminet in the drawer game/demo.
'Per eseguire questo gioco dovete avere tutti i suoi dati; li potete trovare
'nell'archivio degli eseguibili Mattonite.lha su Aminet nel cassetto
'game/demo.
'-----------
Set Buffer 20
OGGETTI$="MattoniteOggetti.Abk"
SUONI$="MattoniteSuoni.Abk"
PUNTEGGI$="TopHundredScores"
VERO=-1
FALSO=0
ALTEZZAFONT=8
BANCO=65535
IMMAGINIBOING=8
IMMAGINIPAPERO=4
IMMAGINIRUBAPALLINA=11
LARGHEZZAPANNELLO=48
MASSIMOBOINGINCAMPO=3
MASSIMOMATTONCINIDARIDISEGNARE=83
MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO=8
MASSIMOPALLINEINCAMPO=5
OGGETTORIGA=0
OGGETTOMATTONCINODIPOTENZIAMENTO=1
OGGETTOBOING=OGGETTOMATTONCINODIPOTENZIAMENTO+MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
OGGETTOCENTRODELLABARRA=OGGETTOBOING+MASSIMOBOINGINCAMPO
OGGETTOLATIDELLABARRA=OGGETTOCENTRODELLABARRA+1
OGGETTOPAPERO=251
OGGETTORUBAPALLINA=252
OGGETTOLASER=253
OGGETTORAGGIOLASER=254
OGGETTOPALLINA=OGGETTOPAPERO-MASSIMOPALLINEINCAMPO
PRIMAPARTITA=VERO
RITARDOUSCITADEIBOING=-1000
SEMITONO#=1.05946
VOCE=1
Dim GIOCATORE$(99),PUNTEGGIO$(99)
Dim DELTAXPALLINA#(MASSIMOPALLINEINCAMPO-1)
Dim DELTAYPALLINA#(MASSIMOPALLINEINCAMPO-1)
Dim VELOCITADELLAPALLINA#(MASSIMOPALLINEINCAMPO-1)
Dim XPALLINA#(MASSIMOPALLINEINCAMPO-1),YPALLINA#(MASSIMOPALLINEINCAMPO-1)
Dim BOING(MASSIMOBOINGINCAMPO-1),C0LORE(31),DURATADELLARIGA(2)
Dim DURATADELRIDISEGNODELMATTONCINO(MASSIMOMATTONCINIDARIDISEGNARE-1)
Dim IMMAGINEBOING(IMMAGINIBOING-1),INGOMBRODELLABARRA(2)
Dim LAPALLINAERIMASTAINCOLLATAALLABARRA(MASSIMOPALLINEINCAMPO-1)
Dim LAPALLINAHACOLPITOLABARRA(MASSIMOPALLINEINCAMPO-1)
Dim LAPALLINAHARIMBALZATOSULBORDODELLABARRA(MASSIMOPALLINEINCAMPO-1)
Dim MATTONCINO(246),MATTONCINODARIDISEGNARE(MASSIMOMATTONCINIDARIDISEGNARE-1)
Dim MATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
Dim PALLINA(MASSIMOPALLINEINCAMPO-1)
Dim VOCE(3),X0ZONA(246),XBOING(MASSIMOBOINGINCAMPO-1)
Dim XCOLLA(MASSIMOPALLINEINCAMPO-1)
Dim XMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
Dim Y0ZONA(246),YBOING(MASSIMOBOINGINCAMPO-1),YCOLLA(MASSIMOPALLINEINCAMPO-1)
Dim YMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
Global VERO,FALSO
Global CENTOGIOCATORI$,OGGETTI$,PERCORSO$,PERCORSODEILIVELLI$
Global PERCORSODELLAGRAFICA$,PERCORSODELLAMUSICA$,PUNTEGGI$
Global ALTEZZAFONT,BANCO,BOINGINCAMPO,BONUS,C0LLA,C0LORIDELLOSCHERMOMENOUNO
Global IMMAGINELASER,IMMAGINEPALLINA,IMMAGINERAGGIOLASER,IMMAGINIBOING
Global IMMAGINIPAPERO,IMMAGINERIGADUE,IMMAGINERIGATRE,IMMAGINERIGAUNO
Global IMMAGINIRUBAPALLINA,LARGHEZZAPANNELLO,LASER,LIVELLO,LUNGHEZZADELLABARRA
Global LUNGHEZZADELLABARRACAMBIATA,MASSIMOBOINGINCAMPO
Global MASSIMOMATTONCINIDARIDISEGNARE,MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
Global MASSIMOPALLINEINCAMPO,MATTONCINI,MATTONCINIDIPOTENZIAMENTO
Global MATTONCINIRIMASTI,OGGETTOBOING,OGGETTOCENTRODELLABARRA,OGGETTOLASER
Global OGGETTOLATIDELLABARRA,OGGETTOMATTONCINODIPOTENZIAMENTO,OGGETTOPALLINA
Global OGGETTOPAPERO,OGGETTORAGGIOLASER,OGGETTORIGA,PALLINE,PALLINEINCAMPO
Global _PAPEROINCAMPO,POSIZIONE,PUNTEGGIO,PUNTEGGIOMASSIMO,RAGGIOLASERRIFLESSO
Global RAGGIOLASERSPARATO,RIGA,RIMBALZODELLEPALLINESUIMATTONCINI,RITARDOBOING
Global RITARDOUSCITADEIBOING,SUONICARICATI,TASTO,TASTOGRIGIO,TASTOSHIFTPREMUTO
Global T0GLILARIGA,VOCE,XBARRA,XFINALERIGA,XLASER,XPANNELLO,XRIGA,YBARRA
Global YLASER
Global GIOCATORE$(),PUNTEGGIO$()
Global DELTAXPALLINA#(),DELTAYPALLINA#(),VELOCITADELLAPALLINA#(),XPALLINA#()
Global YPALLINA#()
Global BOING(),C0LORE(),DURATADELLARIGA(),DURATADELRIDISEGNODELMATTONCINO()
Global IMMAGINEBOING(),INGOMBRODELLABARRA()
Global LAPALLINAERIMASTAINCOLLATAALLABARRA(),LAPALLINAHACOLPITOLABARRA()
Global LAPALLINAHARIMBALZATOSULBORDODELLABARRA(),MATTONCINO()
Global MATTONCINODARIDISEGNARE(),MATTONCINODIPOTENZIAMENTO(),PALLINA(),VOCE()
Global X0ZONA(),XBOING(),XCOLLA(),XMATTONCINODIPOTENZIAMENTO(),Y0ZONA()
Global YBOING(),YCOLLA()
Global YMATTONCINODIPOTENZIAMENTO()
Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA
Proc IMPOSTAIPERCORSIDEIFILE
Proc IMPOSTALOSCHERMO
Proc CARICAGLIOGGETTI
Proc IMPOSTAGLIOGGETTI
Proc IMPOSTAICOLORI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
Proc TROVAILFONTDATA70
Proc DISSOLVENZADEICOLORI[$FFF,1,1]
Hide
Proc IMPOSTALARCOBALENO
'Proc CARICAISUONI
Proc CARICAILLIVELLO
Proc DABANCOAVARIABILI
Proc METTIILPANNELLO
Proc CREALEIMMAGINIPERLERIGHE
Proc IMPOSTALEZONEDEIMATTONCINI
Proc METTIECONTAIMATTONCINI
Proc IMPOSTALINGOMBRODELLABARRA
Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
Proc IMPOSTALADURATADELLERIGHE
Proc DISSOLVENZADEICOLORI[$FFF,1,2]
Proc IMPOSTAILAMPEGGI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
Repeat
Proc MOSTRAICREDITI
Proc MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
TESTOINTRODUTTIVO$="Press left mouse button to play."+Chr$(10)
TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"Press right mouse button to exit."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,21,1,500]
If TASTO=-1
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
C0LLA=FALSO
DURATADELLARIGA=-1
INIZIODELLIVELLO=VERO
LIVELLO=0
LUNGHEZZADELLABARRA=1
LUNGHEZZADELLABARRACAMBIATA=LUNGHEZZADELLABARRA
PALLINE=5
PALLINEINCAMPO=1
PUNTEGGIO=0
RIMBALZODELLEPALLINESUIMATTONCINI=VERO
XBARRA=X Screen(X Mouse)
YBARRA=247
If PRIMAPARTITA=FALSO
Proc CANCELLAIMATTONCINI
Proc CARICAILLIVELLO
Proc DABANCOAVARIABILI
Proc METTIECONTAIMATTONCINI
Else
PRIMAPARTITA=FALSO
End If
Repeat
Proc AGGIORNAILPANNELLO
If INIZIODELLIVELLO=VERO
Proc IMPOSTAIBOING
TESTOINIZIOGIOCO$="Get ready for level"+Str$(LIVELLO)+"!"+Chr$(10)
TESTOINIZIOGIOCO$=TESTOINIZIOGIOCO$+"Press a (mouse) key to begin..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINIZIOGIOCO$,22,20,1,500]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
If SUONICARICATI=VERO
Sam Play VOCE,1 : Proc VOCESEGUENTE
Else
Bell 20
End If
INIZIODELLIVELLO=FALSO
End If
For PALLINA=0 To PALLINEINCAMPO-1
PALLINA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
YPALLINA#(PALLINA)=YBARRA-3
Next PALLINA
Repeat
TASTOCLICCATODELTOPO=Mouse Click
XBARRA=X Screen(X Mouse)
Proc MOSTRALABARRA
Proc CAMBIALALUNGHEZZADELLABARRA
Proc LIMITAIMOVIMENTIDELLABARRA
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
YPALLINA#(PALLINA)=YBARRA-3
Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
End If
Next PALLINA
Proc MOSTRAILLASER
If T0GLILARIGA>0
If XRIGA>0
Dec XRIGA
End If
Proc MOSTRALARIGA[T0GLILARIGA]
Else
If RIGA>0
If XRIGA<XFINALERIGA
Inc XRIGA
Proc MOSTRALARIGA[RIGA]
End If
End If
End If
Proc MATTONCINIDIPOTENZIAMENTO[0,0]
Proc BOINGINCAMPO
Bob Update
TASTOPREMUTO$=Lower$(Inkey$)
TASTOGRIGIO=Key Shift
TASTOSCANSITO=Scancode
Exit If TASTOPREMUTO$=Chr$(27)
If TASTOGRIGIO=4
If TASTOPREMUTO$=" "
Proc MATTONCINIDIPOTENZIAMENTO[Rnd(18)-20,0] : Rem ?
Else If TASTOSCANSITO=80 : Rem F1 key
Add LUNGHEZZADELLABARRACAMBIATA,1,0 To 2
Else If TASTOSCANSITO=81 : Rem F2 key
Add PALLINEINCAMPO,1,1 To 5
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA<PALLINEINCAMPO
PALLINA(PALLINA)=VERO
Else
PALLINA(PALLINA)=FALSO
Proc CANCELLALAPALLINA[PALLINA]
End If
Next PALLINA
Else If TASTOSCANSITO=82 : Rem F3 key
If LASER=-1
LASER=1
Else If LASER=1
LASER=2
Else If LASER=2
LASER=3
Else If LASER=3
LASER=0
End If
Else If TASTOSCANSITO=83 : Rem F4 key
If RIGA>0 and T0GLILARIGA=0
T0GLILARIGA=RIGA
End If
Add RIGA,1,0 To 3
End If
End If
Until TASTOCLICCATODELTOPO>0
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA<PALLINEINCAMPO
PALLINA(PALLINA)=VERO
VELOCITADELLAPALLINA#(PALLINA)=1
D1REZIONEXPALLINA=Rnd(1)
If D1REZIONEXPALLINA=1
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
Else
DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
End If
DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
Else
PALLINA(PALLINA)=FALSO
Proc CANCELLALAPALLINA[PALLINA]
End If
Next PALLINA
Repeat
TASTOCLICCATODELTOPO=Mouse Click
If TASTOCLICCATODELTOPO=1 and C0LLA=VERO
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
Next PALLINA
Else If TASTOCLICCATODELTOPO=2
Proc HAISPARATOILRAGGIOLASER
End If
Exit If TASTOPREMUTO$=Chr$(27)
TASTOPREMUTO$=Lower$(Inkey$)
Exit If TASTOPREMUTO$=Chr$(27)
TASTOGRIGIO=Key Shift
If TASTOGRIGIO>0 and TASTOGRIGIO<8
TASTOSHIFTPREMUTO=VERO
Else
If RAGGIOLASERSPARATO=FALSO
TASTOSHIFTPREMUTO=FALSO
End If
End If
XBARRA=X Screen(X Mouse)
Proc MOSTRALABARRA
Proc CAMBIALALUNGHEZZADELLABARRA
Proc LIMITAIMOVIMENTIDELLABARRA
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO
If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA-XCOLLA(PALLINA)
YPALLINA#(PALLINA)=YBARRA-YCOLLA(PALLINA)
Else
XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+DELTAXPALLINA#(PALLINA)
YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+DELTAYPALLINA#(PALLINA)
End If
Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
If XPALLINA#(PALLINA)>XPANNELLO-1-3
XPALLINA#(PALLINA)=XPANNELLO-1-3
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
Boom
Else If XPALLINA#(PALLINA)<3
XPALLINA#(PALLINA)=3
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
Boom
Else If YPALLINA#(PALLINA)<3
YPALLINA#(PALLINA)=3
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
Boom
End If
If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
Proc MATTONCINOCOLPITODALLAPALLINA[PALLINA]
Proc LAPALLINAHACOLPITOLABARRA[PALLINA]
Proc LAPALLINAHACOLPITOLARIGA[PALLINA]
Proc LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
End If
End If
Next PALLINA
Proc MOSTRAILLASER
Proc MOSTRAILRAGGIOLASER
Proc MATTONCINOCOLPITODALRAGGIOLASER
Proc MATTONCINIDIPOTENZIAMENTO[0,0]
If T0GLILARIGA>0
If XRIGA>0
Dec XRIGA
End If
Proc MOSTRALARIGA[T0GLILARIGA]
Else
If RIGA>0
If XRIGA<XFINALERIGA
Inc XRIGA
Proc MOSTRALARIGA[RIGA]
Else
If DURATADELLARIGA=-1
DURATADELLARIGA=DURATADELLARIGA(RIGA-1)
Else If DURATADELLARIGA=0
T0GLILARIGA=RIGA : RIGA=0
Else
Dec DURATADELLARIGA
End If
End If
End If
End If
If _PAPEROINCAMPO=VERO
Proc _PAPEROINCAMPO
End If
Proc BOINGINCAMPO
Bob Update
For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)>0
MATTONCINO=MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)
If MATTONCINO>0
X0MATTONCINO=X0ZONA(MATTONCINO-1)
Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
TIPODIMATTONCINO=MATTONCINO(MATTONCINO-1)
If TIPODIMATTONCINO=0
Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
Else
Paste Bob X0MATTONCINO,Y0MATTONCINO,82+TIPODIMATTONCINO
End If
End If
Dec DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)
End If
Next MATTONCINODARIDISEGNARE
If BONUS>0
If RITARDODELDECREMENTODELBONUS=9
RITARDODELDECREMENTODELBONUS=0 : Dec BONUS
Else
Inc RITARDODELDECREMENTODELBONUS
End If
End If
Proc MOSTRAILBONUS[FALSO]
If MATTONCINI=0
Inc LIVELLO
INIZIODELLIVELLO=VERO
Exit
End If
Until PALLINEINCAMPO=0
Proc CANCELLALABARRA
Proc CANCELLALEPALLINE
Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO
Proc T0GLIILLASER
Proc CANCELLAILRAGGIOLASER
Proc CANCELLAIBOING
If RIGA>0
For XRIGA=XRIGA To 0 Step -1
Proc MOSTRALARIGA[RIGA]
Bob Update : Wait Vbl
Next XRIGA
End If
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
Proc ANNULLAILRIDISEGNODEIMATTONCINI
Exit If TASTOPREMUTO$=Chr$(27)
If MATTONCINI=0
Proc AGGIUNGIALPUNTEGGIOILBONUS
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
Proc AGGIORNAILPANNELLO
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
Proc AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
Proc AGGIORNAILPANNELLO
End If
If PALLINEINCAMPO>0
Proc CANCELLAIMATTONCINI
Proc CARICAILLIVELLO
Exit If LIVELLO=-1
Proc DABANCOAVARIABILI
Proc METTIECONTAIMATTONCINI
Else
Dec PALLINE : PALLINEINCAMPO=1
End If
Until PALLINE=0
End If
Until TASTO=-2
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
Flash Off : Proc DISSOLVENZADEICOLORI[0,1,1]
Proc T0GLIIMATTONCINI
Proc T0GLIILPANNELLO
Proc T0GLILARCOBALENO
Show : Rainbow Del 0 : Screen Close 0 : Erase All : End
Procedure AGGIORNAILPANNELLO
Proc MOSTRAILPUNTEGGIO[VERO]
Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
Proc MOSTRALEPALLINERIMASTE
Proc MOSTRAILLIVELLO
Proc MOSTRAILBONUS[VERO]
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUS
If BONUS>0
BONUS$="I am going to add the bonus points..."+Chr$(10)
BONUS$=BONUS$+"...to your game points."+Chr$(10)
BONUS$=BONUS$+"Wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,0]
Repeat
Dec BONUS : Proc MOSTRAILBONUS[FALSO]
Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
Until BONUS=0
Else
BONUS$="There are no bonus points..."+Chr$(10)
BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
BONUS$=BONUS$+"Press a (mouse) key to continue..."
_ASPETTA[1000]
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,0]
End If
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
If MATTONCINIRIMASTI>0
BONUS$="I am going to add the left bricks bonus points..."+Chr$(10)
BONUS$=BONUS$+"...to your game points,"+Chr$(10)
BONUS$=BONUS$+"adding two points for each brick left."+Chr$(10)
BONUS$=BONUS$+"You have"+Str$(MATTONCINIRIMASTI)+" bricks left."+Chr$(10)
BONUS$=BONUS$+"Wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,0]
Repeat
Dec MATTONCINIRIMASTI
Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[FALSO]
Until MATTONCINIRIMASTI=0
Else
BONUS$="There are no left bricks bonus points..."+Chr$(10)
BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
BONUS$=BONUS$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
_ASPETTA[1000]
End If
End Proc
Procedure ANNULLAILRIDISEGNODEIMATTONCINI
For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=0
DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
Next MATTONCINODARIDISEGNARE
End Proc
Procedure _ASPETTA[TEMP0DAASPETTARE]
TASTO=0
Timer=0
Repeat
TASTOGRIGIO=Key Shift
TASTOPREMUTO$=Inkey$
TASTOPREMUTODELTOPO=Mouse Key
If TASTOGRIGIO>0 Then Add TASTO,TASTOGRIGIO*256 : Exit
If TASTOPREMUTODELTOPO>0 Then TASTO=-TASTOPREMUTODELTOPO : Exit
If TASTOPREMUTO$<>"" Then TASTO=Asc(TASTOPREMUTO$) : Exit
Until Timer>TEMP0DAASPETTARE
End Proc
Procedure BOINGINCAMPO
For BOING=0 To MASSIMOBOINGINCAMPO-1
If BOING(BOING)>0
If RITARDOBOING=0
Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOING(BOING(BOING)-1)
Add XBOING(BOING),Rnd(4)-2,0 To XFINALERIGA
Inc YBOING(BOING)
Add BOING(BOING),1,1 To 8
End If
Proc ILBOINGESTATOCOLPITO[BOING]
Proc ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
Else If BOING(BOING)=0
XBOING(BOING)=Rnd(XFINALERIGA) : YBOING(BOING)=-9 : BOING(BOING)=Rnd(7)+1
If SUONICARICATI=VERO
Sam Play VOCE,10 : Proc VOCESEGUENTE
Else
Bell 60
End If
Else If BOING(BOING)<0
If BOING(BOING)=RITARDOUSCITADEIBOING
Proc CANCELLAILBOING[BOING] : Inc BOING(BOING)
Else
Inc BOING(BOING)
End If
End If
Next BOING
Add RITARDOBOING,1,0 To 3
End Proc
Procedure CAMBIALALUNGHEZZADELLABARRA
If LUNGHEZZADELLABARRACAMBIATA<>LUNGHEZZADELLABARRA
If LUNGHEZZADELLABARRA=0
If LUNGHEZZADELLABARRACAMBIATA=1
Gosub LUNGHEZZADAZEROAUNO
End If
If LUNGHEZZADELLABARRACAMBIATA=2
Gosub LUNGHEZZADAZEROAUNO
Gosub LUNGHEZZADAUNOADUE
End If
Else If LUNGHEZZADELLABARRA=1
If LUNGHEZZADELLABARRACAMBIATA=0
Gosub LUNGHEZZADAUNOAZERO
End If
If LUNGHEZZADELLABARRACAMBIATA=2
Gosub LUNGHEZZADAUNOADUE
End If
Else If LUNGHEZZADELLABARRA=2
If LUNGHEZZADELLABARRACAMBIATA=0
Gosub LUNGHEZZADADUEAUNO
Gosub LUNGHEZZADAUNOAZERO
End If
If LUNGHEZZADELLABARRACAMBIATA=1
Gosub LUNGHEZZADADUEAUNO
End If
End If
End If
LUNGHEZZADELLABARRA=LUNGHEZZADELLABARRACAMBIATA
Pop Proc
LUNGHEZZADAZEROAUNO:
For OGGETTO=45 To 41 Step -1
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
LUNGHEZZADAUNOADUE:
For OGGETTO=13 To 26
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
LUNGHEZZADADUEAUNO:
For OGGETTO=26 To 13 Step -1
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
LUNGHEZZADAUNOAZERO:
For OGGETTO=41 To 45
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
Bob Update
Next OGGETTO
Return
End Proc
Procedure CANCELLAILBOING[BOING]
Bob Off OGGETTOBOING+BOING
Bob Update
End Proc
Procedure CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
Bob Update
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
End Proc
Procedure CANCELLAILPAPERO
Bob Off OGGETTOPAPERO
Bob Update
End Proc
Procedure CANCELLAIBOING
For BOING=0 To MASSIMOBOINGINCAMPO-1
Bob Off OGGETTOBOING+BOING
Next BOING
Bob Update
End Proc
Procedure CANCELLAILRAGGIOLASER
Bob Off OGGETTORAGGIOLASER
Bob Update
RAGGIOLASERSPARATO=FALSO
RAGGIOLASERRIFLESSO=FALSO
End Proc
Procedure CANCELLAIMATTONCINI
Cls 0,0,0 To XPANNELLO,Screen Height
End Proc
Procedure CANCELLAIMATTONCINIDIPOTENZIAMENTO
For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>0
Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
End If
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
Next MATTONCINODIPOTENZIAMENTO
Bob Update
End Proc
Procedure CANCELLALABARRA
Bob Off OGGETTOCENTRODELLABARRA
Bob Off OGGETTOLATIDELLABARRA
Bob Update
End Proc
Procedure CANCELLALAPALLINA[PALLINA]
Bob Off OGGETTOPALLINA+PALLINA
Bob Update
End Proc
Procedure CANCELLALEPALLINE
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO Then Bob Off OGGETTOPALLINA+PALLINA
Next PALLINA
Bob Update
End Proc
Procedure CARICAGLIOGGETTI
Load PERCORSODELLAGRAFICA$+OGGETTI$
End Proc
Procedure CARICAILLIVELLO
LIVELLO$="Livello"+Str$(LIVELLO)-" "
FILE$=PERCORSODEILIVELLI$+LIVELLO$
If Exist(FILE$)
Open In 1,FILE$
MARCATORE$=Input$(1,9)
LUNGHEZZABANCO=Lof(1)
Close 1
If MARCATORE$="Mattonite"
Reserve As Work BANCO,LUNGHEZZABANCO
Bload FILE$,Start(BANCO)
End If
Else
LIVELLO=-1
End If
End Proc
Procedure CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
If Exist(PUNTEGGI$)
CENTOGIOCATORI$=""
Open In 1,PUNTEGGI$
For POSIZIONE=0 To 99
Exit If Eof(1)
Input #1,GIOCATORE$(POSIZIONE)
CENTOGIOCATORI$=CENTOGIOCATORI$+"<"+Str$(POSIZIONE+1)-" "+"> "
CENTOGIOCATORI$=CENTOGIOCATORI$+GIOCATORE$(POSIZIONE)+Chr$(10)
Input #1,PUNTEGGIO$(POSIZIONE)
CENTOGIOCATORI$=CENTOGIOCATORI$+"points> "
CENTOGIOCATORI$=CENTOGIOCATORI$+PUNTEGGIO$(POSIZIONE)
If Not Eof(1)
CENTOGIOCATORI$=CENTOGIOCATORI$+Chr$(10)
End If
Next POSIZIONE
Close 1
PUNTEGGIOMASSIMO=Val(PUNTEGGIO$(0))
Inc POSIZIONE
End If
End Proc
Procedure CARICAISUONI
Load PERCORSODELLAMUSICA$+SUONI$
End Proc
Procedure CREALEIMMAGINIPERLERIGHE
XFINALERIGA=XPANNELLO-1
IMMAGINERIGAUNO=IMMAGINEPALLINA+1
Ink 20 : Bar 0,251 To XFINALERIGA,255
Get Bob IMMAGINERIGAUNO,0,251 To XFINALERIGA+1,255+1
Hot Spot IMMAGINERIGAUNO,XFINALERIGA,0
IMMAGINERIGADUE=IMMAGINERIGAUNO+1
Ink 21 : Bar 0,251 To XFINALERIGA,255
Get Bob IMMAGINERIGADUE,0,251 To XFINALERIGA+1,255+1
Hot Spot IMMAGINERIGADUE,XFINALERIGA,0
IMMAGINERIGATRE=IMMAGINERIGADUE+1
Ink 22 : Bar 0,251 To XFINALERIGA,255
Get Bob IMMAGINERIGATRE,0,251 To XFINALERIGA+1,255+1
Hot Spot IMMAGINERIGATRE,XFINALERIGA,0
Ink 0 : Bar 0,251 To XFINALERIGA,255
End Proc
Procedure CREATESTOBORDATO[XTESTO,YTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
Ink C0LOREBORDO
Text XTESTO,YTESTO-1,TESTO$
Text XTESTO+1,YTESTO-1,TESTO$
Text XTESTO+1,YTESTO,TESTO$
Text XTESTO+1,YTESTO+1,TESTO$
Text XTESTO,YTESTO+1,TESTO$
Text XTESTO-1,YTESTO+1,TESTO$
Text XTESTO-1,YTESTO,TESTO$
Text XTESTO-1,YTESTO-1,TESTO$
Ink C0LORETESTO
Text XTESTO,YTESTO,TESTO$
End Proc
Procedure DABANCOAVARIABILI
If Length(BANCO)>0
INDIRIZZO=Start(BANCO)+9
For A=0 To 246
MATTONCINO(A)=Peek(INDIRIZZO)
Inc INDIRIZZO
Next A
For A=0 To 255
ARCOBALENO=Peek(INDIRIZZO)
Inc INDIRIZZO
ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100
Rain(0,A)=ARCOBALENO : Rainbow 0,257,0,271
Wait Vbl
Inc INDIRIZZO
Next A
BONUS=Peek(INDIRIZZO)
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*100
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*10000
Inc INDIRIZZO
Add BONUS,Peek(INDIRIZZO)*1000000
Inc INDIRIZZO
End If
Erase BANCO
End Proc
Procedure DISSOLVENZADEICOLORI[C0LORE,VELOCITA,M0DO]
If M0DO=0
For C=0 To C0LORIDELLOSCHERMOMENOUNO
Colour C,C0LORE
If VELOCITA>0
Wait VELOCITA
End If
Next C
Else
Dim ROSSO(C0LORIDELLOSCHERMOMENOUNO),VERDE(C0LORIDELLOSCHERMOMENOUNO),BLU(C0LORIDELLOSCHERMOMENOUNO)
Dim ROSSOFINALE(C0LORIDELLOSCHERMOMENOUNO),VERDEFINALE(C0LORIDELLOSCHERMOMENOUNO),BLUFINALE(C0LORIDELLOSCHERMOMENOUNO)
Dim ROSSODISSOLTO(C0LORIDELLOSCHERMOMENOUNO),VERDEDISSOLTO(C0LORIDELLOSCHERMOMENOUNO),BLUDISSOLTO(C0LORIDELLOSCHERMOMENOUNO)
For C=0 To C0LORIDELLOSCHERMOMENOUNO
If M0DO=1
ROSSOFINALE(C)=C0LORE/256
VERDEFINALE(C)=C0LORE/16 mod 16
BLUFINALE(C)=C0LORE mod 16
Else If M0DO=2
ROSSOFINALE(C)=C0LORE(C)/256
VERDEFINALE(C)=C0LORE(C)/16 mod 16
BLUFINALE(C)=C0LORE(C) mod 16
End If
ROSSO(C)=Colour(C)/256
VERDE(C)=Colour(C)/16 mod 16
BLU(C)=Colour(C) mod 16
Next C
Repeat
For C=0 To C0LORIDELLOSCHERMOMENOUNO
If ROSSODISSOLTO(C)=FALSO
If ROSSO(C)<ROSSOFINALE(C)
Inc ROSSO(C)
Else If ROSSO(C)=ROSSOFINALE(C)
ROSSODISSOLTO(C)=VERO
Else If ROSSO(C)>ROSSOFINALE(C)
Dec ROSSO(C)
End If
End If
If VERDEDISSOLTO(C)=FALSO
If VERDE(C)<VERDEFINALE(C)
Inc VERDE(C)
Else If VERDE(C)=VERDEFINALE(C)
VERDEDISSOLTO(C)=VERO
Else If VERDE(C)>VERDEFINALE(C)
Dec VERDE(C)
End If
End If
If BLUDISSOLTO(C)=FALSO
If BLU(C)<BLUFINALE(C)
Inc BLU(C)
Else If BLU(C)=BLUFINALE(C)
BLUDISSOLTO(C)=VERO
Else If BLU(C)>BLUFINALE(C)
Dec BLU(C)
End If
End If
Colour C,ROSSO(C)*256+VERDE(C)*16+BLU(C)
If C=0
C0LORIDISSOLTI=0
End If
If ROSSODISSOLTO(C)=VERO
If VERDEDISSOLTO(C)=VERO
If BLUDISSOLTO(C)=VERO
Inc C0LORIDISSOLTI
End If
End If
End If
Next C
If VELOCITA>0
Wait VELOCITA
End If
Until C0LORIDISSOLTI=C0LORIDELLOSCHERMOMENOUNO+1
End If
End Proc
Procedure HAISPARATOILRAGGIOLASER
If LASER>0 and RAGGIOLASERSPARATO=FALSO
XLASER=XBARRA : YLASER=YBARRA+4 : IMMAGINERAGGIOLASER=9+LASER
RAGGIOLASERSPARATO=VERO
If SUONICARICATI=VERO
Sam Play VOCE,4,8363/SEMITONO#^LASER : Proc VOCESEGUENTE
Else
Shoot
End If
End If
End Proc
Procedure ILBOINGESTATOCOLPITO[BOING]
If Bob Col(OGGETTOBOING+BOING,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
PALLINA=Col(-1)-OGGETTOPALLINA
XPALLINA=Int(XPALLINA#(PALLINA))
XDISTANZADELBOINGDALLAPALLINA=XBOING(BOING)-XPALLINA
YPALLINA=Int(XPALLINA#(PALLINA))
YDISTANZADELBOINGDALLAPALLINA=YBOING(BOING)-YPALLINA
If XDISTANZADELBOINGDALLAPALLINA<9
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
End If
If YDISTANZADELBOINGDALLAPALLINA<9
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
Add PUNTEGGIO,3 : Proc MOSTRAILPUNTEGGIO[FALSO]
BOING(BOING)=RITARDOUSCITADEIBOING
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Bell 3
End If
Else If Bob Col(OGGETTOBOING+BOING,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
Proc CANCELLAILRAGGIOLASER
Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[FALSO]
BOING(BOING)=RITARDOUSCITADEIBOING
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Bell 2
End If
Else If Bob Col(OGGETTOBOING+BOING,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
Add PUNTEGGIO,1 : Proc MOSTRAILPUNTEGGIO[FALSO]
BOING(BOING)=RITARDOUSCITADEIBOING
If SUONICARICATI=VERO
Sam Play VOCE,9 : Proc VOCESEGUENTE
Else
Bell 1
End If
End If
End Proc
Procedure ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
If YBOING(BOING)>255+9 Then BOING(BOING)=RITARDOUSCITADEIBOING
End Proc
Procedure IMPOSTAGLIOGGETTI
IMMAGINEPALLINA=Length(1)
IMMAGINELASER=6
MATTONCINIDIPOTENZIAMENTO=Length(1)-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIPAPERO-116
For IMMAGINE=0 To IMMAGINIBOING-1
IMMAGINEBOING(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING+IMMAGINE
Next IMMAGINE
End Proc
Procedure IMPOSTAIBOING
For BOING=0 To MASSIMOBOINGINCAMPO-1
BOING(BOING)=0
Next BOING
End Proc
Procedure IMPOSTAICOLORI
Get Bob Palette
C0LORIDELLOSCHERMOMENOUNO=Screen Colour-1
If C0LORIDELLOSCHERMOMENOUNO=63 Then C0LORIDELLOSCHERMOMENOUNO=31
For C=0 To C0LORIDELLOSCHERMOMENOUNO
C0LORE(C)=Colour(C)
Next C
End Proc
Procedure IMPOSTAILAMPEGGI
Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)"
Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)"
Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)"
End Proc
Procedure IMPOSTAIPERCORSIDEIFILE
PERCORSODELLAGRAFICA$=PERCORSO$+"Grafica/"
PERCORSODEILIVELLI$=PERCORSO$+"Livelli/"
PERCORSODELLAMUSICA$=PERCORSO$+"Musica/"
End Proc
Procedure IMPOSTALADURATADELLERIGHE
DURATADELLARIGA(0)=3000
DURATADELLARIGA(1)=9000
DURATADELLARIGA(2)=27000
End Proc
Procedure IMPOSTALARCOBALENO
Set Rainbow 0,0,271,"","",""
For LINEADELLARCOBALENO=0 To 255
Rain(0,LINEADELLARCOBALENO)=$FFF
Next LINEADELLARCOBALENO
Rainbow 0,257,0,271
End Proc
Procedure IMPOSTALEVOCI
For VOCE=0 To 3
VOCE(VOCE)=2^VOCE
Next VOCE
End Proc
Procedure IMPOSTALEZONEDEIMATTONCINI
Reserve Zone 264
For MATTONCINO=0 To 246
LINEADELMATTONCINO=MATTONCINO/13 : RIGADELMATTONCINO=MATTONCINO mod 13
X0ZONA(MATTONCINO)=RIGADELMATTONCINO*21
Y0ZONA(MATTONCINO)=LINEADELMATTONCINO*11
X0MATTONCINO=X0ZONA(MATTONCINO)
Y0MATTONCINO=Y0ZONA(MATTONCINO)
If RIGADELMATTONCINO=12
X1MATTONCINO=X0MATTONCINO+19
Else
X1MATTONCINO=X0MATTONCINO+20
End If
Y1MATTONCINO=Y0MATTONCINO+9
Set Zone MATTONCINO+1,X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
Next MATTONCINO
End Proc
Procedure IMPOSTALINGOMBRODELLABARRA
INGOMBRODELLABARRA(0)=10
INGOMBRODELLABARRA(1)=16
INGOMBRODELLABARRA(2)=31
End Proc
Procedure IMPOSTALOSCHERMO
Screen Open 0,320,256,64,Lowres : Curs Off : Flash Off : Pen 1 : Paper 0
Cls : Bob Update Off : Gr Writing 0 : Wait Vbl : Limit Mouse
End Proc
Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA
PERCORSO$=Dir$
End Proc
Procedure LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
If YPALLINA#(PALLINA)>255+3
Proc CANCELLALAPALLINA[PALLINA]
PALLINA(PALLINA)=FALSO
Dec PALLINEINCAMPO
End If
End Proc
Procedure LAPALLINAHACOLPITOLABARRA[PALLINA]
If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
If LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
If C0LLA=VERO
XCOLLA(PALLINA)=XBARRA-Int(XPALLINA#(PALLINA))
YCOLLA(PALLINA)=YBARRA-Int(YPALLINA#(PALLINA))
LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
End If
If Col(OGGETTOCENTRODELLABARRA)=VERO
If LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)=VERO
DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)/2.0
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)*2
LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)=FALSO
Else
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
Else If Col(OGGETTOLATIDELLABARRA)=VERO
If LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)=VERO
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
Else
DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)*2
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)/2.0
LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)=VERO
End If
End If
If LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)=VERO
If SUONICARICATI=VERO
Sam Play VOCE,1,4181 : Proc VOCESEGUENTE
Else
Boom
End If
Else
If SUONICARICATI=VERO
Sam Play VOCE,1 : Proc VOCESEGUENTE
Else
Boom
End If
End If
LAPALLINAHACOLPITOLABARRA(PALLINA)=VERO
End If
Else
LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
End If
End Proc
Procedure LAPALLINAHACOLPITOLARIGA[PALLINA]
If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTORIGA To OGGETTORIGA)=VERO
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
Bell 96
End If
End Proc
Procedure LIMITAIMOVIMENTIDELLABARRA
X0LIMITETOPO=X Hard(INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
Y0LIMITETOPO=Y Hard(0)
X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
Y1LIMITETOPO=Y Hard(Screen Height-1)
Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
End Proc
Procedure LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
If OGGETTO>39 and OGGETTO<46
INGOMBRODELLABARRA=46-OGGETTO+10
Else If OGGETTO>12 and OGGETTO<27
INGOMBRODELLABARRA=OGGETTO+4
End If
X0LIMITETOPO=X Hard(INGOMBRODELLABARRA)
Y0LIMITETOPO=Y Hard(0)
X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA)
Y1LIMITETOPO=Y Hard(Screen Height-1)
Wait Vbl
Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
End Proc
Procedure MATTONCINIDIPOTENZIAMENTO[MATTONCINO,FREQUENZADIUSCITADELMATTONCINODIPOTENZIAMENTO]
If FREQUENZADIUSCITADELMATTONCINODIPOTENZIAMENTO>0 Then Pop Proc
If MATTONCINO=0
For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
If TIPODIMATTONCINODIPOTENZIAMENTO>0
Bob OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),115+TIPODIMATTONCINODIPOTENZIAMENTO
Proc MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
Inc YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
Proc MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
End If
Next MATTONCINODIPOTENZIAMENTO
Else
For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
If TIPODIMATTONCINODIPOTENZIAMENTO=0
If MATTONCINO>0
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Rnd(19)+1
XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=X0ZONA(MATTONCINO-1)
YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Y0ZONA(MATTONCINO-1)
Else If MATTONCINO<0
MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-MATTONCINO
XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=XBARRA-9
YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-9
End If
Exit
End If
Next MATTONCINODIPOTENZIAMENTO
End If
End Proc
Procedure MATTONCINOCOLPITODALLAPALLINA[PALLINA]
XPALLINA=Int(XPALLINA#(PALLINA)) : YPALLINA=Int(YPALLINA#(PALLINA))
MATTONCINO=Zone(XPALLINA,YPALLINA)
If MATTONCINO>0
MATTONELLA=MATTONCINO(MATTONCINO-1)
If MATTONELLA>0
If MATTONELLA<10
MATTONCINOELIMINATODALLAPALLINA=VERO
Else If MATTONELLA>9 and MATTONELLA<28
Add MATTONCINO(MATTONCINO-1),-9
Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
Else
MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
End If
Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
Y1MATTONCINO=Y0MATTONCINO+9
If RIMBALZODELLEPALLINESUIMATTONCINI=VERO
If YPALLINA<Y1MATTONCINO and YPALLINA>Y0MATTONCINO
DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
Else
DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
End If
If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
If SUONICARICATI=VERO
Sam Play VOCE,3,8363*SEMITONO#^4 : Proc VOCESEGUENTE
Else
Bell 40
End If
Else
If SUONICARICATI=VERO
Sam Play VOCE,3 : Proc VOCESEGUENTE
Else
Bell 30
End If
End If
Else
If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
If SUONICARICATI=VERO
Sam Play VOCE,6,8363*SEMITONO#^4 : Proc VOCESEGUENTE
Else
Bell 60
End If
Else
If SUONICARICATI=VERO
Sam Play VOCE,6 : Proc VOCESEGUENTE
Else
Bell 50
End If
End If
End If
If MATTONCINOELIMINATODALLAPALLINA=VERO
MATTONCINO(MATTONCINO-1)=0
Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(19)]
End If
End If
End If
End Proc
Procedure MATTONCINOCOLPITODALRAGGIOLASER
If RAGGIOLASERSPARATO=VERO
If TASTOSHIFTPREMUTO=FALSO
ZONALASER=Zone(XLASER,YLASER)
If ZONALASER>0
MATTONELLA=MATTONCINO(ZONALASER-1)
If MATTONELLA>0
If MATTONELLA<10
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else If MATTONELLA>9 and MATTONELLA<28
Add MATTONCINO(ZONALASER-1),-9
Proc RIDISEGNODELMATTONCINO[ZONALASER,100]
Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
Proc CANCELLAILRAGGIOLASER
Else If MATTONELLA=28
If LASER>0
MATTONCINOELIMINATODALRAGGIOLASER=VERO
End If
Else If MATTONELLA=29
If LASER>1
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else
Proc CANCELLAILRAGGIOLASER
End If
Else If MATTONELLA=30
If LASER=3
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else
Proc CANCELLAILRAGGIOLASER
End If
Else If MATTONELLA=31
If LASER>0
RAGGIOLASERRIFLESSO=VERO
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else
Proc CANCELLAILRAGGIOLASER
End If
Else If MATTONELLA=32
If LASER>1
RAGGIOLASERRIFLESSO=VERO
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else
Proc CANCELLAILRAGGIOLASER
End If
Else If MATTONELLA=33
If LASER=3
RAGGIOLASERRIFLESSO=VERO
MATTONCINOELIMINATODALRAGGIOLASER=VERO
Else
Proc CANCELLAILRAGGIOLASER
End If
End If
If MATTONCINOELIMINATODALRAGGIOLASER=VERO
MATTONCINO(ZONALASER-1)=0
Proc RIDISEGNODELMATTONCINO[ZONALASER,100]
Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
If RAGGIOLASERRIFLESSO=FALSO
Proc CANCELLAILRAGGIOLASER
End If
End If
End If
End If
End If
End If
End Proc
Procedure MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
If Bob Col(OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
If TIPODIMATTONCINODIPOTENZIAMENTO=MASSIMOMATTONCINIDIPOTENZIAMENTO
MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
Add PUNTEGGIO,20
Else
Add PUNTEGGIO,10
End If
Proc MOSTRAILPUNTEGGIO[FALSO]
Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
Repeat
If TIPODIMATTONCINODIPOTENZIAMENTO=1 : Rem add a ball in the game field
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=FALSO
PALLINA(PALLINA)=VERO
XPALLINA#(PALLINA)=XBARRA
YPALLINA#(PALLINA)=YBARRA-3
VELOCITADELLAPALLINA#(PALLINA)=1
D1REZIONEXPALLINA=Rnd(1)
If D1REZIONEXPALLINA=1
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
Else
DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
End If
DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
Inc PALLINEINCAMPO
Exit
End If
Next
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=2 : Rem b(all)+
If PALLINE<1000
Inc PALLINE : Proc MOSTRALEPALLINERIMASTE
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=3 : Rem b(all)-
If PALLINE>0
Dec PALLINE : Proc MOSTRALEPALLINERIMASTE
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=4 : Rem B(ar)+
If LUNGHEZZADELLABARRA<2
Inc LUNGHEZZADELLABARRACAMBIATA
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=5 : Rem B(ar)-
If LUNGHEZZADELLABARRA>0
Dec LUNGHEZZADELLABARRACAMBIATA
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=6 : Rem D(uck)
_PAPEROINCAMPO= Not _PAPEROINCAMPO
If _PAPEROINCAMPO=VERO
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
Else
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=7 : Rem G(lue)
C0LLA= Not C0LLA
If C0LLA=VERO
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
Else
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=8 : Rem L(aser)+
If LASER=-1
LASER=1
Else If LASER=1
LASER=2
Else If LASER=2
LASER=3
End If
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=9 : Rem L(aser)-
If LASER>0
Dec LASER
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=10 : Rem N(ext level)
MATTONCINIRIMASTI=MATTONCINI : MATTONCINI=0
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=11 : Rem P(oints)+
If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
If PUNTEGGIO<9999800
Add PUNTEGGIO,180 : Proc MOSTRAILPUNTEGGIO[FALSO]
End If
Else
If PUNTEGGIO<9999900
Add PUNTEGGIO,90 : Proc MOSTRAILPUNTEGGIO[FALSO]
End If
End If
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=12 : Rem P(oints)-
If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
Add PUNTEGGIO,-220
Else
Add PUNTEGGIO,-110
End If
If PUNTEGGIO<0
PUNTEGGIO=0 : Proc MOSTRAILPUNTEGGIO[FALSO]
End If
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=13 : Rem R(ow)+
If RIGA<3
T0GLILARIGA=RIGA : Inc RIGA
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=14 : Rem R(ow)-
If RIGA>0
T0GLILARIGA=RIGA
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=15 : Rem S(peed)+
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)<8
VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)+0.5
If LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
Else
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
End If
End If
Next PALLINA
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=16 : Rem S(peed)-
For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)>0.5
VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)-0.5
If LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
Else
DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
End If
End If
Next PALLINA
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=17 : Rem X(treme)
RIMBALZODELLEPALLINESUIMATTONCINI= Not RIMBALZODELLEPALLINESUIMATTONCINI
If RIMBALZODELLEPALLINESUIMATTONCINI=FALSO
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
Else
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=18 : Rem y+
If YBARRA<247
Add YBARRA,5
If SUONICARICATI=VERO
Sam Play VOCE,16 : Proc VOCESEGUENTE
Else
Bell 30
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=19 : Rem y-
If YBARRA>197
Add YBARRA,-5
If SUONICARICATI=VERO
Sam Play VOCE,17 : Proc VOCESEGUENTE
Else
Bell 10
End If
End If
TIPODIMATTONCINODIPOTENZIAMENTO=0
Else If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO : Rem ?
If SUONICARICATI=VERO
Sam Play VOCE,18 : Proc VOCESEGUENTE
Else
Bell 30
End If
TIPODIMATTONCINODIPOTENZIAMENTO=Rnd(18)+1
End If
Until TIPODIMATTONCINODIPOTENZIAMENTO=0
End If
End Proc
Procedure MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
If YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>255
Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
End If
End Proc
Procedure METTIILPANNELLO
XPANNELLO=Screen Width-LARGHEZZAPANNELLO
Paste Bob XPANNELLO,0,51 : Paste Bob XPANNELLO,128,52
End Proc
Procedure METTIECONTAIMATTONCINI
MATTONCINI=0
For MATTONCINO=0 To 246
If MATTONCINO(MATTONCINO)>0
Paste Bob X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO),82+MATTONCINO(MATTONCINO)
Inc MATTONCINI
Else
Ink 0 : Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
End If
Next MATTONCINO
End Proc
Procedure MOSTRAICREDITI
CREDITI$="EsseErre Sofware Solutions"+Chr$(10)
CREDITI$=CREDITI$+"presents..."+Chr$(10)
CREDITI$=CREDITI$+"************"+Chr$(10)
CREDITI$=CREDITI$+"* MATTONITE *"+Chr$(10)
CREDITI$=CREDITI$+"************"+Chr$(10)
CREDITI$=CREDITI$+"by Stefano Regattin"+Chr$(10)
CREDITI$=CREDITI$+"piazza Pietro Gasparri, 4/U"+Chr$(10)
CREDITI$=CREDITI$+"20161 Milano (Milan) Italia (Italy)"+Chr$(10)
CREDITI$=CREDITI$+"http://members.tripod.it/esseerre/Stefano.html"+Chr$(10)
CREDITI$=CREDITI$+"e-mail:stefano.regattin@tin.it"+Chr$(10)
CREDITI$=CREDITI$+"This game and its editor are freely shared out."+Chr$(10)
CREDITI$=CREDITI$+"if you want the source codes of Mattonite,"+Chr$(10)
CREDITI$=CREDITI$+"MattoniteEditor or both, search on Aminet the"+Chr$(10)
CREDITI$=CREDITI$+"archive Mattonite_Src.lha."+Chr$(10)
CREDITI$=CREDITI$+"The source codes don't require any additional"+Chr$(10)
CREDITI$=CREDITI$+"extension."+Chr$(10)
CREDITI$=CREDITI$+"If you will create a new game starting from these"+Chr$(10)
CREDITI$=CREDITI$+"source codes, let me know and don't forget to"+Chr$(10)
CREDITI$=CREDITI$+"mention me in your resulting final program."+Chr$(10)
CREDITI$=CREDITI$+"One day I have asked to my major sister Antonella"+Chr$(10)
CREDITI$=CREDITI$+"if she would liked I created a game for her,"+Chr$(10)
CREDITI$=CREDITI$+"assuring her I was able to create almost any"+Chr$(10)
CREDITI$=CREDITI$+"kind of game she wanted."+Chr$(10)
CREDITI$=CREDITI$+"The answer was yes and she specified a game"+Chr$(10)
CREDITI$=CREDITI$+"with a bar, a bouncing ball over the bar and"+Chr$(10)
CREDITI$=CREDITI$+"dozens of bricks deletable by the ball hit,"+Chr$(10)
CREDITI$=CREDITI$+"gaining points for the hits."+Chr$(10)
CREDITI$=CREDITI$+"So I started the developing of this game and"+Chr$(10)
CREDITI$=CREDITI$+"she called it Mattonite, that in italian means"+Chr$(10)
CREDITI$=CREDITI$+"brickache."+Chr$(10)
CREDITI$=CREDITI$+"press a (mouse) key to scroll quickly the text"+Chr$(10)
CREDITI$=CREDITI$+"or press the Esc key to leave the text."+Chr$(10)
CREDITI$=CREDITI$+"This is the end...Enjoy!"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CREDITI$,22,22,1,250]
End Proc
Procedure MOSTRAILBONUS[M0DO]
If M0DO=VERO
CIFRA=BONUS/1000000 mod 10
Paste Bob 305,120,73+CIFRA
CIFRA=BONUS/100000 mod 10
Paste Bob 305,138,73+CIFRA
CIFRA=BONUS/10000 mod 10
Paste Bob 305,156,73+CIFRA
CIFRA=BONUS/1000 mod 10
Paste Bob 305,174,73+CIFRA
CIFRA=BONUS/100 mod 10
Paste Bob 305,192,73+CIFRA
CIFRA=BONUS/10 mod 10
Paste Bob 305,210,73+CIFRA
CIFRA=BONUS mod 10
Paste Bob 305,228,73+CIFRA
Else
CIFRA=BONUS mod 10
Paste Bob 305,228,73+CIFRA
If CIFRA=9
CIFRA=BONUS/10 mod 10
Paste Bob 305,210,73+CIFRA
If CIFRA=9
CIFRA=BONUS/100 mod 10
Paste Bob 305,192,73+CIFRA
If CIFRA=9
CIFRA=BONUS/1000 mod 10
Paste Bob 305,174,73+CIFRA
If CIFRA=9
CIFRA=BONUS/10000 mod 10
Paste Bob 305,156,73+CIFRA
If CIFRA=9
CIFRA=BONUS/100000 mod 10
Paste Bob 305,138,73+CIFRA
If CIFRA=9
CIFRA=BONUS/1000000 mod 10
Paste Bob 305,120,73+CIFRA
End If
End If
End If
End If
End If
End If
End If
End Proc
Procedure MOSTRAILLASER
If LASER>0
Bob OGGETTOLASER,XBARRA,YBARRA,IMMAGINELASER+LASER
Else If LASER=0
Proc T0GLIILLASER
LASER=-1
End If
End Proc
Procedure MOSTRAILLIVELLO
CIFRA=LIVELLO/100 mod 10
Paste Bob 273,29,63+CIFRA
CIFRA=LIVELLO/10 mod 10
Paste Bob 289,29,63+CIFRA
CIFRA=LIVELLO mod 10
Paste Bob 305,29,63+CIFRA
End Proc
Procedure MOSTRAILPUNTEGGIO[M0D0]
If M0DO=VERO
CIFRA=PUNTEGGIO/1000000 mod 10
Paste Bob 273,120,53+CIFRA
CIFRA=PUNTEGGIO/100000 mod 10
Paste Bob 273,138,53+CIFRA
CIFRA=PUNTEGGIO/10000 mod 10
Paste Bob 273,156,53+CIFRA
CIFRA=PUNTEGGIO/1000 mod 10
Paste Bob 273,174,53+CIFRA
CIFRA=PUNTEGGIO/100 mod 10
Paste Bob 273,192,53+CIFRA
CIFRA=PUNTEGGIO/10 mod 10
Paste Bob 273,210,53+CIFRA
CIFRA=PUNTEGGIO mod 10
Paste Bob 273,228,53+CIFRA
Else
CIFRA=PUNTEGGIO mod 10
Paste Bob 273,228,5+Asc(Str$(CIFRA)-" ")
If CIFRA=0
CIFRA=PUNTEGGIO/10 mod 10
Paste Bob 273,210,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/100 mod 10
Paste Bob 273,192,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/1000 mod 10
Paste Bob 273,174,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/10000 mod 10
Paste Bob 273,156,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/100000 mod 10
Paste Bob 273,138,53+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIO/1000000 mod 10
Paste Bob 273,120,53+CIFRA
End If
End If
End If
End If
End If
End If
End If
If PUNTEGGIO>PUNTEGGIOMASSIMO
PUNTEGGIOMASSIMO=PUNTEGGIO
End If
Proc MOSTRAILPUNTEGGIOMASSIMO[M0DO]
Proc MOSTRALAPOSIZIONE
End Proc
Procedure MOSTRAILPUNTEGGIOMASSIMO[M0DO]
If M0DO=VERO
CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
Paste Bob 289,120,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
Paste Bob 289,138,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
Paste Bob 289,156,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
Paste Bob 289,174,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO/100 mod 10
Paste Bob 289,192,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO/10 mod 10
Paste Bob 289,210,63+CIFRA
CIFRA=PUNTEGGIOMASSIMO mod 10
Paste Bob 289,228,63+CIFRA
Else
CIFRA=PUNTEGGIOMASSIMO mod 10
Paste Bob 289,228,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/10 mod 10
Paste Bob 289,210,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/100 mod 10
Paste Bob 289,192,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
Paste Bob 289,174,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
Paste Bob 289,156,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
Paste Bob 289,138,63+CIFRA
If CIFRA=0
CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
Paste Bob 289,120,63+CIFRA
End If
End If
End If
End If
End If
End If
End If
End Proc
Procedure MOSTRAILRAGGIOLASER
If RAGGIOLASERSPARATO=VERO
If RAGGIOLASERRIFLESSO=VERO
If Bob Col(OGGETTORAGGIOLASER,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
Proc CANCELLAILRAGGIOLASER
Else
If YLASER<255
Add YLASER,5
Else
Proc CANCELLAILRAGGIOLASER
End If
End If
Else
If YLASER>0
Add YLASER,-5
Else
Proc CANCELLAILRAGGIOLASER
End If
End If
Bob OGGETTORAGGIOLASER,XLASER,YLASER,IMMAGINERAGGIOLASER
Bob Update
End If
End Proc
Procedure MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
If Exist(PUNTEGGI$)
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CENTOGIOCATORI$,20,22,1,250]
Else
NONCISONOGIOCATORI$="No players till now..."+Chr$(10)
NONCISONOGIOCATORI$=NONCISONOGIOCATORI$+"Press a (mouse) key to continue"
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONCISONOGIOCATORI$,21,20,1,250]
End If
End Proc
Procedure MOSTRALABARRA
If LUNGHEZZADELLABARRA=0
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,5
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,6
Else If LUNGHEZZADELLABARRA=1
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,1
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,2
Else If LUNGHEZZADELLABARRA=2
Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,3
Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,4
End If
End Proc
Procedure MOSTRALAPOSIZIONE
For POSIZIONE=1 To 100
If PUNTEGGIO>Val(PUNTEGGIO$(POSIZIONE-1))
Exit
Else If PUNTEGGIO$(POSIZIONE-1)=""
Exit
End If
Next POSIZIONE
CIFRA=POSIZIONE/100 mod 10
Paste Bob 273,47,73+CIFRA
CIFRA=POSIZIONE/10 mod 10
Paste Bob 289,47,73+CIFRA
CIFRA=POSIZIONE mod 10
Paste Bob 305,47,73+CIFRA
End Proc
Procedure MOSTRALARIGA[TIPODIRIGA]
If TIPODIRIGA=1
IMMAGINERIGA=IMMAGINERIGAUNO
Else If TIPODIRIGA=2
IMMAGINERIGA=IMMAGINERIGADUE
Else If TIPODIRIGA=3
IMMAGINERIGA=IMMAGINERIGATRE
End If
If XRIGA>0
Bob OGGETTORIGA,XRIGA,251,IMMAGINERIGA
Else
Proc T0GLILARIGA
T0GLILARIGA=0
End If
Bob Update
End Proc
Procedure MOSTRALEPALLINERIMASTE
PALLINERIMASTE=PALLINE-1
CIFRA=PALLINERIMASTE/100 mod 10
Paste Bob 273,11,53+CIFRA
CIFRA=PALLINERIMASTE/10 mod 10
Paste Bob 289,11,53+CIFRA
CIFRA=PALLINERIMASTE mod 10
Paste Bob 305,11,53+CIFRA
End Proc
Procedure _PAPEROINCAMPO
End Proc
Procedure RIDISEGNODELMATTONCINO[MATTONCINO,DURATADELRIDISEGNODELMATTONCINO]
For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
Else If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
Pop Proc
End If
Next MATTONCINODARIDISEGNARE
End Proc
Procedure RIMETTILOSFONDO
Put Block 1
End Proc
Procedure SUONA[SUONO,FREQUENZA]
Sam Play VOCE(VOCE),SUONO,FREQUENZA
Proc VOCESEGUENTE
End Proc
Procedure TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTO$,C0LORETESTOPRIMALINEA,C0LORETESTOSECONDALINEA,C0LOREBORDO,TEMP0]
If TESTO$="" Then Get Block 1,0,0,Screen Width,Screen Height
ALTEZZALINEA=ALTEZZAFONT+3
LINEE=1
POSIZIONEPAROLA=1
Repeat
ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
If ACAPO>0 Then Inc LINEE : POSIZIONEPAROLA=ACAPO+1
Until ACAPO=0
If LINEE=1
C0LORETESTO=C0LORETESTOPRIMALINEA
XINIZIOTESTO=(Screen Width-Text Length(TESTO$))/2
YINIZIOTESTO=(Screen Height-(ALTEZZALINEA))/2+Text Base
Proc RIMETTILOSFONDO
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
Proc _ASPETTA[TEMP0]
If TASTO=27
Pop Proc
End If
Else
Dim TESTO$(LINEE-1)
POSIZIONEPAROLA=1
For LINEA=0 To LINEE-1
ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
If ACAPO>0
TESTO$(LINEA)=Mid$(TESTO$,POSIZIONEPAROLA,ACAPO-POSIZIONEPAROLA)
POSIZIONEPAROLA=ACAPO+1
Else
TESTO$(LINEA)=Right$(TESTO$,Len(TESTO$)-POSIZIONEPAROLA+1)
End If
Next LINEA
ALTEZZATESTO=ALTEZZALINEA*LINEE
If ALTEZZATESTO<Screen Height
ILTESTOSTATUTTONELLOSCHERMO=VERO
Else
For LINEA=LINEE To 2 Step -1
ALTEZZATESTO=ALTEZZALINEA*LINEA
If ALTEZZATESTO<Screen Height
NUMEROMASSIMODILINEENELLOSCHERMO=LINEA
Exit
End If
Next LINEA
End If
If ILTESTOSTATUTTONELLOSCHERMO=VERO
Proc RIMETTILOSFONDO
YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
For LINEA=0 To LINEE-1
If LINEA mod 2=0
C0LORETESTO=C0LORETESTOPRIMALINEA
Else
C0LORETESTO=C0LORETESTOSECONDALINEA
End If
XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
Next LINEA
Proc _ASPETTA[TEMP0]
If TASTO=27
Pop Proc
End If
Else
Proc RIMETTILOSFONDO
YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
For LINEA=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
If(LINEA) mod 2=0
C0LORETESTO=C0LORETESTOPRIMALINEA
Else
C0LORETESTO=C0LORETESTOSECONDALINEA
End If
XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
Next LINEA
Proc _ASPETTA[TEMP0*NUMEROMASSIMODILINEENELLOSCHERMO]
If TASTO=27
Pop Proc
End If
For LINEA=1 To LINEE-NUMEROMASSIMODILINEENELLOSCHERMO
Proc RIMETTILOSFONDO
For LINEANELLOSCHERMO=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
If(LINEA+LINEANELLOSCHERMO) mod 2=0
C0LORETESTO=C0LORETESTOPRIMALINEA
Else
C0LORETESTO=C0LORETESTOSECONDALINEA
End If
XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEANELLOSCHERMO+LINEA)))/2
Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEANELLOSCHERMO,TESTO$(LINEANELLOSCHERMO+LINEA),C0LORETESTO,C0LOREBORDO]
Next LINEANELLOSCHERMO
Proc _ASPETTA[TEMP0]
If TASTO=27
Pop Proc
End If
Next LINEA
End If
End If
End Proc
Procedure T0GLILARCOBALENO
For LINEADELLARCOBALENO=271 To 271-255 Step -1
Rainbow 0,257,0,LINEADELLARCOBALENO
Wait Vbl
Next LINEADELLARCOBALENO
End Proc
Procedure T0GLILARIGA
Bob Off OGGETTORIGA
End Proc
Procedure T0GLIILLASER
Bob Off OGGETTOLASER
Bob Update
End Proc
Procedure T0GLIILPANNELLO
Ink 0
For LINEAPANNELLO=255 To 0 Step -1
Draw XPANNELLO,LINEAPANNELLO To XPANNELLO+LARGHEZZAPANNELLO-1,LINEAPANNELLO
Wait Vbl
Next LINEAPANNELLO
End Proc
Procedure T0GLIIMATTONCINI
Ink 0
For MATTONCINO=246 To 0 Step -1
If MATTONCINO(MATTONCINO)>0
Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
Wait Vbl
End If
Next MATTONCINO
End Proc
Procedure TROVAILFONTDATA70
TESTOFONTEDICARATTERE$="I am looking for the Data70 font..."+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"...in your FONTS: drawer."+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Wait for a moment, please..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,0]
Get Disc Fonts
For FONTEDICARATTERE=1 To 65535
FONTEDICARATTERE$=Left$(Font$(FONTEDICARATTERE),30)-" "
If FONTEDICARATTERE$="Data70.font" Then Exit
Next FONTEDICARATTERE
If FONTEDICARATTERE<65536
Set Font FONTEDICARATTERE
ALTEZZAFONT=Val(Mid$(Font$(FONTEDICARATTERE),31,2)-" ")
TESTOFONTEDICARATTERE$="The font I am using is the Data70 font! :)"+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,250]
Else
TESTOFONTEDICARATTERE$="The font I am using is the Topaz font! :("+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,18,18,19,250]
End If
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
End Proc
Procedure VOCESEGUENTE
Add VOCE,VOCE : If VOCE=16 Then VOCE=1
End Proc